#pragma once
#include "CTransform.h"
#include "CMILMatrix.h"

class CTransformCollection;

class CTransformGroup :
	public CTransform
{

protected: 
	CTransformGroup(const CTransformGroup & original, HRESULT & hr);
private: 
	CTransformGroup(CCoreServices * pCore);
	virtual ~CTransformGroup();
	HRESULT FromString(CREATEPARAMETERS * pCreate);
public: 
	static HRESULT Create(CDependencyObject * * ppObject, CREATEPARAMETERS * pCreate);
	virtual XUINT32 GetTypeIndex() const;
	virtual HRESULT Clone(CNoParentShareableDependencyObject * * ppClone);
	virtual HRESULT CloneForTarget(CRenderTarget * pRenderTarget, CTransform * * ppTransform);
	virtual void GetTransform(CMILMatrix * pMatrix);
	static HRESULT GetTransformValue(struct Xcp_IDependencyObject * pObject, XUINT32 cArgs, CValue * pArgs, CValue * pResult);
	static void NWSetTransformsDirty(CDependencyObject * pTarget, enum DirtyFlags::Value flags);
private: 
	void UpdateCachedTransform();
public: 
	CTransformCollection * m_pChild;
private: 
	CMILMatrix m_groupMatrix; 
	XUINT32 m_uiCacheUpdatedFrame;
	XBOOL m_fNWTransformsDirty;


};
